Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

175
Vistas
(React, JS, TS) la función funciona "onClick" pero no en "KeyPress"

Tengo una función que funciona según lo previsto cuando se llama "onClick", pero omite una declaración if cuando se llama con "onKeyPress".

contexto

solo imagine una entrada donde pueda buscar recetas de comida (por ejemplo, "pizza") y obtenga una lista de recetas de una API con las recetas.

todo el código relevante explicado

↓ Esta variable almacena un valor booleano. Comprueba si una consulta de una entrada está incluida en alguno de los títulos de la lista de recetas que se muestra actualmente.

 const recipeListHasQuery = recipectx.data.map((recipe: any) => { return recipe.title.toLowerCase().includes(query); })

Si al menos uno de los títulos de recetas de la lista no incluye la consulta que estamos buscando, podemos borrar la lista.

(básicamente, si buscó "pizza" y ahora busca "hamburguesa" y no hay "hamburguesa" en ningún título de las recetas de pizza, podemos borrar la lista y mostrar las recetas de hamburguesas)

↓ Esta función funciona cuando se llama "onClick" no funciona en "onKeyPress".

 const clearView = () => { console.log('i log on enter') ↓ does not work on enter if (!recipeListHasQuery.includes(true)) { const recipeList = document.querySelector(".recipe__list") as HTMLElement; recipeList!.innerHTML = ""; }

↓ Esta función funciona cuando se llama "onKeyPress" pero omite la instrucción if

 const HandleInputOnKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => { if (event.key === "Enter") { HandleInputChange(event as any); ← this works fine on "Enter" // clearView(); ← works on "Enter" but omits the if statement ↓ just typing it out does not work either if (!recipeListHasQuery.includes(true)) { const recipeList = document.querySelector(".recipe__list") as HTMLElement; recipeList!.innerHTML = ""; } } };

entonces el problema es que en lugar de tener una lista de recetas, con cada consulta, agregas una nueva

↓ Esta es la forma en que estoy llamando a las funciones.

 <form> <input onKeyPress={HandleInputOnKeyPress}></input> <button onClick={clearView}> Search </button> </form>
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La función se llama correctamente, por lo que esto no tiene nada que ver con los eventos de clic y pulsación de tecla. El problema está en la lógica, particularmente en su declaración if dentro de la función clearView. Puede console.log(recipeListHasQuery.includes(true)) justo antes del if y depurar la lógica desde allí

Si tiene dificultades con eso, siéntase libre de agregar su código a jsfiddle, lo ayudaré a depurarlo.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda